package com.erp.erp_servers.Department;

import com.erp.erp_entitys.Department.DepartmentEntity;
import com.erp.erp_entitys.Department.DepartmentExample;
import com.erp.erp_entitys.Department.DepartmentTreeEntity;

import java.util.List;

/**
 * @ClassName IDepartmentService
 * @Description 部门接口
 * @Author songjizhen
 * @Date 2020-07-03 21:58
 * @Version 1.0
 */
public interface IDepartmentService {
    /**
     * 新增部门
     * @param record
     * @return
     */
    int insertSelective(DepartmentEntity record);

    /**
     * 根据id查询部门
     * @param id
     * @return
     */
    DepartmentEntity selectByPrimaryKey(Integer id);

    /**
     * 根据id更新部门
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(DepartmentEntity record);

    /**
     * 根据给定的条件查询部门
     * @param record
     * @return
     */
    List<DepartmentEntity> selectByExample(DepartmentEntity record);
    List<DepartmentEntity> selectByExample( DepartmentExample example);

    /**
     * 查询code是否得复
     * @param code
     * @return
     */
    boolean getExitBycode(String code);

    /**
     * 根据code查询其所属公司
     * @param code
     * @return
     */
    String getCompanentcodeBycode(String code);
    /**
     * 获取组织机构树
     * @return
     */
    DepartmentTreeEntity selectTree();

    /**
     * 获取当前用户所属部门树
     * @param code 当前用户所属部门编码
     * @return 当前用户所属部门树
     */
    DepartmentTreeEntity getCurrentUserDepartmentTree(String code);

    /**
     * 根据id删除
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Integer id);
    DepartmentTreeEntity selectUserTree(String  code,String model,String lx,String userCode);

    /**
     * 获取所有用户所管理的部门
     * @return 当前用户所管理的部门
     */
    DepartmentTreeEntity getAllDepartmentUser();

    /**
     * 获取当前用户所管理的部门
     * @param userCode 当前用户编码
     * @return 当前用户所管理的部门
     */
    DepartmentTreeEntity getTheDepartmentManagedByTheCurrentUser(String userCode);

    /**
     * 获取当前用户所管理的部门(只包含在职人员)
     * @param userCode 当前用户编码
     * @return 当前用户所管理的部门(只包含在职人员)
     */
    DepartmentTreeEntity getServingOfficersDepartmentTree(String userCode);

    /**
     * 通过用户编码获取该用户管理的所有用户编码(多个用户编码以英文逗号隔开)
     * @param userCode 指定用户编码
     * @return 该用户管理的所有用户编码
     */
    String getUserCodeByTheCurrentUser(String userCode);
}
